home *** CD-ROM | disk | FTP | other *** search
- /*
- File: CAProxyPart.h
-
- Contains: CAProxyPart CALib proxy part editor class definition.
-
- Written by: Rick Badertscher, Steve Foley AND PartMaker
-
- Change History (most recent first):
-
- <3> 11/18/95 RB Major strip down. Removed many obsolete methods.
- <2> 11/10/95 RB Removed some obsolete methods.
- <1> 6/15-6/30 RB Major rewrite.
-
- ------------------------------------------------------------------------------
-
- <24> 5/16/95 SJF Add UTIL_ContainerAddNewFrame and
- UTIL_ContainerAdjustFrameShape routines
- <17> 5/15/95 RB Adding EXTN_InstallCAFrameShapeHandler,
- EXTN_InstallCAFrameAddedHandler,
- and EXTN_InstallCAEventInEmbeddedHandler
-
- <16> 5/12/95 RB Added EXTN_SetSelected, EXTN_SetHighlight
- Modifications for new selection implementation.
-
- <15> 5/8/95 SJF Remove DocRef from the DnD setup calls
- <14> 5/6/95 SJF WWDC bug fix session with Rick, add some more clone
- utilities to support Drag & Drop
- <11> 4/7/95 SJF CreateLink now returns an ODLinkSource*.
- Saw this one in Nice. New idl files for
- b1c14 specify the ODLinkSource* type
- <8> 4/02/95 RB Integrating changes for b1c14 build
- <7> 4/01/95 RB Adding support for CAWindowActivateHandler()
- <6> 3/30/95 RB Added method UTIL_HandleActivateEvent
- <5> 3/15/95 SJF Add support for CAProxyExtension
- <3+> 2/20/95 SJF Mergin in changes from RickB
- <3> 2/13/95 SJF Interim checkin to update project database
- <0> 10/16/94 SJF first written
-
- To Do:
- implement
-
- */
-
- #ifndef _CAPROXYPART_
- #define _CAPROXYPART_
-
- #define USE_CA_SEGMENTS // Enable segmentation directives for all files
-
- #ifndef __DRAG__
- #include <Drag.h> // For DragTrackingHandler type, etc.
- #endif
-
- #ifndef _ODTYPES_
- #include <ODTypes.h>
- #endif
-
- #ifndef _PLFMFILE_
- #include <PlfmFile.h>
- #endif
-
- #ifndef SOM_ODObjectSpec_xh
- #include <ODObjSpc.xh>
- #endif
-
- #ifndef _FACETLIST_
- #include "FacetList.h"
- #endif
-
- #ifndef SOM_CAProxyExtension_xh
- #include "CAProxyExtension.xh"
- #endif
-
-
- /*——————————————————————————————————————————————————————————————————————————————
- • Things that Parts are factories for:
-
- ODExtension ODPart::AcquireExtension()
- ODEmbeddedFramesIterator ODPart::CreateEmbeddedFramesIterator()
- ODDispatchModule <none needed>
- ODFocusModule <none needed>
-
- *——————————————————————————————————————————————————————————————————————————————
- */
-
- //==============================================================================
- // Constants
- //==============================================================================
-
- #define kNoBias kODNULL
-
- #define kHandCursor 283
- #define kClosedHandCursor 284
-
- //==============================================================================
- // Forward declarations
- //==============================================================================
-
- class ODFocusSet;
- class ODMenuBar;
- class ODSession;
- class ODWindow;
- class ODFrame;
- class ODFacet;
- class ODShape;
- class ODStorageUnit;
- class ODStorageUnitView;
- class ODEmbeddedFramesIterator;
- class ODLink;
- class ODLinkSource;
- class ODTypeList;
- class ODPart;
- class ODDragItemIterator;
- class ODCanvas;
- class ODExtension;
- class ODTransform;
- class OrderedCollection;
-
- class CAProxyExtension;
- class FacetList;
-
- //==============================================================================
- // Constants
- //==============================================================================
-
- #define kODStorageUnitRefLen 4
-
- //==============================================================================
- // Types
- //==============================================================================
-
- class PartInfo
- {
- public:
-
- PartInfo() {fHasSelectionFocus = kODFalse; fNeedsActivating = kODTrue;}
-
- inline void SetFrameActive( ODBoolean active) {fHasSelectionFocus = active;}
- inline ODBoolean IsFrameActive( void) {return fHasSelectionFocus;}
- inline void SetNeedsActivating( ODBoolean value) {fNeedsActivating = value;}
- inline ODBoolean GetNeedsActivating( void) {return fNeedsActivating;}
-
- private:
- ODBoolean fHasSelectionFocus;
- ODBoolean fNeedsActivating;
- };
-
-
- class CFrameInfo
- {
- public:
-
- CFrameInfo (Environment* ev, ODID frameID, ODDraft* draft);
- ~CFrameInfo ();
-
- void Internalize (void);
- void Externalize (ODStorageUnit* su);
- ODFrame* GetFrame(void);
- void Close(void);
- virtual void Remove(void);
- ODID GetID(void);
-
- protected:
-
- ODID fFrameID;
- ODFrame* fFrame;
- ODDraft* fDraft;
- Environment* fEv;
-
- };
-
- class CDisplayFrameInfo
- {
- public:
-
- CDisplayFrameInfo (Environment* ev, ODFrame* frame);
- ~CDisplayFrameInfo ();
-
- inline ODFrame* GetFrame(void) {return fFrame;}
- inline ODID GetID(void) {return fFrameID;}
-
- protected:
-
- ODID fFrameID;
- ODFrame* fFrame;
- Environment* fEv;
-
-
- };
-
- //==============================================================================
- // CAProxyPart
- //==============================================================================
-
- class CAProxyPart
- {
- public:
- CAProxyPart();
- ~CAProxyPart();
-
- public:
-
- // • ODObject •
- ODBoolean HasExtension(Environment* ev, ODType extensionName);
- ODExtension* AcquireExtension(Environment* ev, ODType extensionName);
- void ReleaseExtension(Environment* ev, ODExtension* extension);
- ODSize Purge(Environment* ev, ODSize size);
-
- // • ODRefCntObject •
- void Release(Environment* ev);
-
- // • ODPersistentObject •
- void CloneInto(Environment* ev, ODDraftKey key, ODStorageUnit* toSU, ODFrame* scope);
-
- // • DragAndDrop •
- void FulfillPromise(Environment* ev, ODStorageUnitView *promiseSUView);
- void DropCompleted (Environment* ev, ODPart* destPart, ODDropResult dropResult);
- ODDragResult DragEnter (Environment* ev, ODDragItemIterator* dragInfo, ODFacet* facet,
- ODPoint* where);
- ODDragResult DragWithin (Environment* ev, ODDragItemIterator* dragInfo, ODFacet* facet,
- ODPoint* where);
- void DragLeave (Environment* ev, ODFacet* facet, ODPoint* where);
- ODDropResult Drop (Environment* ev, ODDragItemIterator* dropInfo, ODFacet* facet,
- ODPoint* where);
-
- // • Embedding •
- void ContainingPartPropertiesUpdated(Environment* ev, ODFrame* frame,
- ODStorageUnit* propertyUnit);
- ODStorageUnit* AcquireContainingPartProperties (Environment* ev, ODFrame* frame);
-
- ODBoolean RevealFrame (Environment* ev, ODFrame* embeddedFrame,
- ODShape* revealShape);
- void EmbeddedFrameSpec (Environment* ev, ODFrame* embeddedFrame,
- ODObjectSpec* spec);
- ODEmbeddedFramesIterator*
- CreateEmbeddedFramesIterator (Environment* ev, ODFrame* frame);
-
- // • Frame •
- void DisplayFrameAdded (Environment* ev, ODFrame* frame);
- void DisplayFrameRemoved (Environment* ev, ODFrame* frame);
- void DisplayFrameConnected (Environment* ev, ODFrame* frame);
- void DisplayFrameClosed (Environment* ev, ODFrame* frame);
- void AttachSourceFrame (Environment* ev, ODFrame* frame, ODFrame* sourceFrame);
- void FrameShapeChanged (Environment* ev, ODFrame* frame);
- void ViewTypeChanged (Environment* ev, ODFrame* frame);
- void PresentationChanged (Environment* ev, ODFrame* frame);
- void SequenceChanged (Environment* ev, ODFrame* frame);
- void WritePartInfo (Environment* ev, ODInfoType partInfo,
- ODStorageUnitView* storageUnitView);
- ODInfoType ReadPartInfo (Environment* ev, ODFrame* frame,
- ODStorageUnitView* storageUnitView);
-
- void ClonePartInfo( Environment* ev,
- ODDraftKey key,
- ODInfoType partInfo,
- ODStorageUnitView* storageUnitView,
- ODFrame* scope);
-
- ODFrame* RequestEmbeddedFrame(Environment* ev, ODFrame* containingFrame, ODFrame* baseFrame,
- ODShape* frameShape, ODPart* embedPart,
- ODTypeToken viewType, ODTypeToken presentation,
- ODBoolean isOverlaid);
- void RemoveEmbeddedFrame (Environment* ev, ODFrame* embeddedFrame);
- ODShape* RequestFrameShape (Environment* ev, ODFrame* embeddedFrame, ODShape* frameShape);
- void UsedShapeChanged (Environment* ev, ODFrame* embeddedFrame);
- ODShape* AdjustBorderShape (Environment* ev, ODFacet* embeddedFacet, ODShape* shape);
-
- // • Facet •
- void FacetAdded (Environment* ev, ODFacet* facet);
- void FacetRemoved (Environment* ev, ODFacet* facet);
- void CanvasChanged (Environment* ev, ODFacet* facet);
- void GeometryChanged(Environment* ev, ODFacet* facet, ODBoolean clipShapeChanged,
- ODBoolean externalTransformChanged);
-
- // • Imaging •
- void CanvasUpdated (Environment* ev, ODCanvas* canvas);
- void HighlightChanged (Environment* ev, ODFacet* facet);
- ODULong GetPrintResolution(Environment* ev, ODFrame* frame);
-
- // • Linking •
- ODLinkSource* CreateLink (Environment* ev, ODByteArray* data);
- void LinkUpdated (Environment* ev, ODLink* updatedLink, ODUpdateID id);
- void RevealLink (Environment* ev, ODLinkSource* linkSource);
- void EmbeddedFrameUpdated(Environment* ev, ODFrame* frame, ODUpdateID change);
- void LinkStatusChanged (Environment* ev, ODFrame* frame);
-
- // • Memory Management •
-
- // • Part Activation •
- ODBoolean BeginRelinquishFocus (Environment* ev, ODTypeToken focus, ODFrame* ownerFrame,
- ODFrame* proposedFrame);
- void CommitRelinquishFocus(Environment* ev, ODTypeToken focus, ODFrame* ownerFrame,
- ODFrame* proposedFrame);
- void AbortRelinquishFocus (Environment* ev, ODTypeToken focus, ODFrame* ownerFrame,
- ODFrame* proposedFrame);
- void FocusAcquired (Environment* ev, ODTypeToken focus, ODFrame* ownerFrame);
- void FocusLost (Environment* ev, ODTypeToken focus, ODFrame* ownerFrame);
-
- // • Binding •
- void ExternalizeKinds(Environment* ev, ODTypeList* kindList);
- void ChangeKind (Environment* ev, ODType kind);
-
- // • Undo •
- void UndoAction (Environment* ev, ODActionData* actionState);
- void RedoAction (Environment* ev, ODActionData* actionState);
- void DisposeActionState(Environment* ev, ODActionData* actionState, ODDoneState doneState);
- void WriteActionState (Environment* ev, ODActionData* actionState,
- ODStorageUnitView* storageUnitView);
- ODActionData ReadActionState (Environment* ev, ODStorageUnitView* storageUnitView);
-
- // • ODPersistentObject •
- void Externalize (Environment* ev);
-
- void InitPart (Environment* ev, ODStorageUnit* storageUnit, ODPart* partWrapper);
- void InitPartFromStorage(Environment* ev, ODStorageUnit* storageUnit, ODPart* partWrapper);
- void Draw (Environment* ev, ODFacet* facet, ODShape* invalidShape);
- ODID Open (Environment* ev, ODFrame* frame);
- void ReleaseAll (Environment* ev);
-
-
- // • UI Events •
- ODBoolean HandleEvent (Environment* ev, ODEventData* event, ODFrame* frame,
- ODFacet* facet, ODEventInfo* eventInfo);
- //ODBoolean HandleEventInEmbedded(Environment* ev, ODEventData* event, ODFrame* frame,
- // ODFacet* facet, ODFrame* embeddedFrame,
- // ODFacet* embeddedFacet);
-
- void MouseEnter (Environment* ev, ODFacet* facet, ODPoint* where);
- void MouseWithin(Environment* ev, ODFacet* facet, ODPoint* where);
- void MouseLeave (Environment* ev, ODFacet* facet);
- void AdjustMenus(Environment* ev, ODFrame* frame);
-
-
- protected:
-
- // CAProxyPart - implementation-specific methods:
-
- void UTIL_CheckAndAddProperties( Environment*, ODStorageUnit*);
- void UTIL_CleanseContentProperty( Environment*, ODStorageUnit*);
- void UTIL_InternalizeContent( Environment*, ODStorageUnit*);
-
-
- void UTIL_CommonInitPart (Environment* ev);
- void UTIL_SetDirty (Environment* ev);
-
- ODBoolean UTIL_HandleActivateEvent(Environment* ev, ODFrame* frame, ODEventData* event);
-
- void UTIL_ActivateDisplayFrame( Environment *ev, ODFrame* frame);
- CFrameInfo* UTIL_FindFrameInfoForFrame( Environment *ev, ODFrame* frame);
-
- public:
-
- OrderedCollection* UTIL_GetEmbeddedFrames(Environment *ev);
-
-
-
- // •ProxyPart Extension methods
-
- public:
- // Drag & Drop callback registry for CAProxyPart <==> CALib
- OSErr EXTN_SetDragReceiveHandler( Environment* ev,
- DragReceiveHandler receiveHandler,
- void* handlerRefCon);
-
- OSErr EXTN_SetDragTrackingHandler( Environment* ev,
- DragTrackingHandler trackingHandler,
- void* handlerRefCon);
-
- OSErr EXTN_SetDragSendProc( Environment* ev,
- DragSendDataProc sendProc,
- void* dragSendRefCon );
-
-
- void EXTN_InstallCAWindowActivateHandler( Environment* ev,
- CAWindowActivateHandlerUPP theHandler);
-
- void EXTN_InstallCAFocusHandlers( Environment* ev,
- CAFocusAcquiredProcUPP aquiredHandler,
- CAFocusLostProcUPP lostHandler,
- CADocumentRef docRef);
-
- void EXTN_InstallCAAdjustBorderHandler( Environment* ev,
- CAProxyHookAdjustBorder theHook,
- CAAdjustBorderProc theHandler);
-
-
- void EXTN_InstallCAFrameShapeRequestHandler( Environment* ev,
- CAProxyHookFrameShapeRequest theHook,
- CAFrameShapeRequestHandler theHandler);
-
- void EXTN_InstallCACanvasUpdatedHandler( Environment* ev,
- CACanvasUpdatedProcUPP theHandler);
-
-
- void EXTN_AddFrame( Environment* ev, ODFrame* frame);
- void EXTN_RemoveFrame( Environment* ev, ODFrame* frame);
- void EXTN_GetLastEventInfo( Environment* ev,
- ODEventInfo* eventInfo);
-
- // • Class instance vars...
- private:
-
- Boolean fDirty;
- Boolean fReadOnlyStorage;
- CADocumentRef fCADocumentRef;
-
- ODMenuBar* fMenuBar;
-
- ODPart* fSelf; // Passed into InitPart and InitPartFromStorage.
- FacetList fFacets; // List of all my visible facets
- ODFrame* fActiveFrame; // set when window is deactivated when embedded
- // frame is active
-
- // CAProxyPart - implementation-specific fields:
-
- ODShape* fActiveBorderShape;
-
- CDisplayFrameInfo* fDisplayFrame; // Only 1 for now
- OrderedCollection* fEmbeddedFrames;
-
- // ProxyPart extension support
-
- CAProxyExtension* fProxyExt;
-
- DragTrackingHandlerUPP fCADnDTrackHnd;
- void* fTrackRefCon;
- DragReceiveHandlerUPP fCADnDReceiveHnd;
- void* fReceiveRefCon;
-
- CAWindowActivateHandlerUPP fCAWindowActivateHandler;
- CAFocusAcquiredProcUPP fCAFocusAquiredHandler;
- CAFocusLostProcUPP fCAFocusLostHandler;
- CAAdjustBorderProc fCAAdjustBorderHandler;
- CAProxyHookAdjustBorder fCAAdjustBorderHook;
- CACanvasUpdatedProcUPP fCACanvasUpdatedHandler;
-
- CAFrameShapeRequestHandler fCAFrameShapeRequestHandler;
- CAProxyHookFrameShapeRequest fCAFrameShapeRequestHook;
-
- ODEventInfo fLastEventInfo;
-
- };
-
- #endif
-
-